home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 003 / motorola / Sources / c / ffwdansi < prev    next >
Text File  |  1993-07-18  |  3KB  |  121 lines

  1. #include <stdio.h>
  2.  
  3. #include "mselect.h"    /*external selection of microprocessor symbol table*/
  4. #include "proto.h"
  5. #include "as.h"
  6. #include "extvars.h"
  7. #include "structs.h"
  8.  
  9.  
  10. /*
  11.  * file I/O version of forward ref handler
  12.  */
  13.  
  14.  
  15. /*
  16.  * fwdinit --- initialize forward ref file
  17.  */
  18. void 
  19. fwdinit(void)
  20. {
  21.         if ((Forward = fopen(Fwd_name, "w+b")) == NULL)
  22.                 fatal("Cannot open forward reference file - no Wimp$ScrapDir?");
  23.         return;
  24. }
  25.  
  26. /*
  27.  * fwdreinit --- reinitialize forward ref file
  28.  */
  29. void
  30. fwdreinit(void)
  31. {
  32.         int             stat;
  33.         extern int      Ffn;
  34.         extern int      F_ref;
  35.  
  36.  
  37.         F_ref = 0;
  38.         Ffn = 0;
  39.         rewind(Forward);        /* rewind forward refs */
  40.         stat = fread(&Ffn, 1, sizeof(int), Forward);
  41.         if (ferror(Forward) != 0)
  42.                 fatal("Unable to read forward ref file");
  43.         /*
  44.          * ad first forward ref into mem
  45.          */
  46.         stat = fread(&F_ref, 1, sizeof(int), Forward);  /* read first forward
  47.                                                          * ref into mem */
  48.         if (ferror(Forward) != 0)
  49.                 fatal("Unable to read forward ref file");
  50. #ifdef DEBUG
  51.         printf("First fwd ref: %d,%d\n", Ffn, F_ref);
  52. #endif
  53. }
  54.  
  55. /*
  56.  * fwdmark --- mark current file/line as containing a forward ref
  57.  */
  58. void
  59. fwdmark(void)
  60. {
  61.         int             stat;
  62.         extern int      Cfn, Line_num;
  63.  
  64.         stat = fwrite(&Cfn, sizeof(Cfn), sizeof(char), Forward);
  65.         /*
  66.          * if( stat < sizeof(int)) fatal("Unable to write to forward ref
  67.          * file");
  68.          */
  69.         stat = fwrite(&Line_num, sizeof(Line_num), sizeof(char), Forward);
  70.         /*
  71.          * if( stat < sizeof(int)) fatal("Unable to write to forward ref
  72.          * file");
  73.          */
  74. }
  75.  
  76. /*
  77.  * fwdnext --- get next forward ref
  78.  */
  79. void
  80. fwdnext(void)
  81. {
  82.  
  83.         int             stat;
  84.         extern int      F_ref, Ffn;
  85.  
  86.         stat = fread(&Ffn, 1, sizeof(int), Forward);
  87.         if (ferror(Forward))
  88.                 fatal("Unable to read forward ref file");
  89. #ifdef DEBUG
  90.         printf("Ffn stat=%d ", stat);
  91. #endif
  92.         stat = fread(&F_ref, 1, sizeof(int), Forward);
  93.         /*
  94.          * if( stat < sizeof(F_ref) ){ if( ferror(Forward) ) fatal("Unable to
  95.          * read forward ref file"); F_ref=0; Ffn=0; }
  96.          */
  97.         if (stat < 2) {
  98.                 if (ferror(Forward))
  99.                         fatal("Unable to read forward ref file");
  100.                 F_ref = 0;
  101.                 Ffn = 0;
  102.         }
  103. #ifdef DEBUG
  104.         printf("F_ref stat=%d  ", stat);
  105.         printf("Next Fwd ref: %d,%d\n", Ffn, F_ref);
  106. #endif
  107. }
  108.  
  109. /*
  110.  * fwd_done --- closes & deletes forward reference file
  111.  */
  112. void 
  113. fwd_done(void)
  114. {
  115.         fclose(Forward);        /* Have to close first on MS-DOS or you leave
  116.                                  * lost clusters. */
  117. #ifndef DEBUG
  118.         remove(Fwd_name);
  119. #endif
  120. }
  121.